#pragma once

/* 这文件是对语音识别SDK API的二次封装。*/

#include "aip-cpp-sdk/speech.h"
#include "logger.hpp"

namespace ChatSystem
{

class ASRClient
{
public:
    using ptr = std::shared_ptr<ASRClient>;
    ASRClient(const std::string& app_id, 
        const std::string& api_key, 
        const std::string& secret_key)
        :_client(app_id, api_key, secret_key)
        {}
    
    //语音识别    
    std::string recognize(const std::string& speech_data, std::string& err)
    {

        Json::Value result = _client.recognize(speech_data, "pcm", 16000, aip::null);   //返回值是一个Json格式的字符串
        if(result["err_no"].asInt() != 0)
        {
            LOG_ERROR("语音识别失败：{}", result["err_msg"].asString());
            err = result["err_msg"].asString();
            return std::string();
        }
        return result["result"][0].asString();
    }

    //从语音文件中获取数据
    void get_file_content(const std::string& filePath,  std::string*const file_content)
    {
        aip::get_file_content(filePath.c_str(), file_content);

    }
private:
    aip::Speech _client;
};

}